from threading import Timer
import webbrowser

from flask import Flask

from service.page_router import page_blueprint
from service.rest_router import rest_blueprint
from common.handler import exception_handler

"""
项目的启动文件，负责加载蓝图、异常处理函数以及在程序准备就绪之后自动打开浏览器页面
"""

if __name__ == '__main__':
    app: Flask = Flask(import_name=__name__)

    # 没错，先有圣人后有天，我惠美如画中仙！
    app.secret_key = "Kato Megumi"

    # 注册蓝图
    app.register_blueprint(blueprint=page_blueprint)
    app.register_blueprint(blueprint=rest_blueprint)

    # 注册全局异常管理的函数
    app.register_error_handler(Exception, exception_handler)

    # TODO 这里在生产环境下需要取消注释，另外把下面的debug改成False
    # 如果不设置debug=False，那么这里就会启动两次网页
    Timer(3, lambda: webbrowser.open("http://127.0.0.1:5000/")).start()
    app.run(debug=False)
